package com.itheima.io.bufferedinputstream.demo03;

import java.io.*;

public class CopyFileDemo01 {

    // 需求：使用高效的字节输入流和字节输出流进行复制文件(视频文件)
    public static void main(String[] args) throws IOException {

        // 1. 创建高效的字节输入流对象和字节输出流对象
        // 创建高效的字节输入流对象
        BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream("E:\\a.avi")) ;

        // 创建高效的字节输出流对象
        BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream("D:\\a.avi")) ;

        // 2. 通过字节输入流对象读取数据(一次读一个字节，一次读一个字节数组)，字节输出流对象写数据
        // 一次读取一个字节
//        int by = - 1 ;                              // 作用：记录读取到的字节
//        while(( by = bufferedInputStream.read()) != -1) {
//            bufferedOutputStream.write(by);
//        }


        // 一次读取一个字节数组
        byte[] bytes = new byte[1024] ;
        int len = -1 ;                              // 作用：记录读取到的有效字节个数
        while( (len = bufferedInputStream.read(bytes)) != -1) {
            bufferedOutputStream.write(bytes , 0 , len);
        }

        // 3. 释放资源
        bufferedOutputStream.close();
        bufferedInputStream.close();

        /**
         * 关闭流对象的时候存在一个原则：先开的后关
         */

    }

}
